package main
import "fmt"

type stu struct{
	name string
	age int
	p * stu
}

func main(){
	fmt.Println("仿链表")
	
	/*首先，我需要一个结构体指针，用来存储链表(结构体)的第一个节点(结构体)的地址*/
	var head *stu
	
	/*然后，我创建了一个结构体*/
	stu1 := stu{"Rui01", 22, nil}	/*这里的nil相当于c的NULL*/
	
	/*接着，我把这个结构体的地址，给head来存储*/
	head = &stu1
	
	
	/*一不开心，我又创建了一个结构体*/
	stu2 := stu{"Rui02", 22, nil}
	
	/*接下来，就不是把地址给head，而是给第1个结构体的成员变量，p *stu 这个。*/
	stu1.p = &stu2
	
	/*然后又不开心，又创建了一个结构体*/
	stu3 := stu{"Rui03", 22, nil}
	
	/*按上一步的套路，把这个地址，付给第2个结构体的成员变量，p *stu 这个。*/
	stu2.p = &stu3
	
	/*以此类推，形成一种循环，添加内容*/
	
	fmt.Println(head)	//访问第1个结构体
	fmt.Println(head.p)	//访问第2个结构体
	fmt.Println(head.p.p)	//访问第3个结构体
}